import axios from 'axios';
import config from './config.js';

// 封装axios的代码部分，用于统一配置和添加拦截器等
const setupAxios = (vue) => {
    var auth = vue.prototype.$auth;
    var obj = axios.create({
        baseURL: 'http://10.10.74.227/api/' // 这里可以考虑从config.js中读取，增强灵活性，后续可优化
    });
    obj.interceptors.request.use(function (conf) {
        conf.headers.Authorization = auth.getAuthorization();
        return conf;
    });
    vue.prototype.$http = obj;
};

export default {
    install: function (vue) {
        setupAxios(vue); // 在插件安装时进行axios的封装配置
    },
    props: ['category_id'],
    data () {
        return {
            goodslist: [],
            last_id: 0
        }
    },
    created () {
        this.getGoodsList();
    },
    methods: {
        getGoodsList () {
            this.$indicator.open({
                text: '加载中'
            });
            // 构造请求参数
            let params = { last_id: this.last_id, category_id: this.category_id };
            // 使用封装好的$http来发起请求，替换原来直接使用axios的地方
            this.$http.get('/api/', { params })
              .then((response) => {
                    const res = response.data;
                    if (res.code === 1) {
                        if (res.data.length > 0) {
                            this.goodslist = this.goodslist.concat(res.data);
                            this.last_id = res.data[res.data.length - 1].id;
                        } else if (this.goodslist.length > 0) {
                            this.$toast('已经到达底部');
                        } else {
                            this.$toast('列表为空');
                        }
                    }
                })
              .catch((error) => {
                    console.error('请求出错：', error);
                    this.$indicator.close();
                    // 可以添加更友好的错误提示给用户，比如弹出提示框告知请求失败等
                })
              .finally(() => {
                    this.$indicator.close();
                });
        },
        getMore () {
            this.getGoodsList();
        }
    }
}